iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
AI & Data

AI-ction!我的超級瑪莉歐闖關歷險記:用自動化破關,收集時間金幣系列 第 28

Day 28:挑戰日誌 —— ChatBot的服務之翼

  • 分享至 

  • xImage
  •  

昨天,我們終於打造出 ChatBot 的 API 鑰匙。
而今天的任務,是要幫它打開世界的大門:
讓它從封閉的實驗室,走向能與真實使用者互動的舞台。

從實驗室到舞台:建立臨時互動介面

我們先在 Colab + ngrok 環境中,用 Gradio 架起一個臨時的聊天窗口。

def chat_interface(message, history, user_id):    
    
    payload = {"query": message}
    res = requests.post(ngrok_url, json=payload)
    res.raise_for_status() # 檢查 HTTP 請求是否成功      
    data = res.json()   # 解析 FastAPI 回傳的 JSON
    chatbot_answer = data.get("answer", "抱歉,ChatBot 沒有回覆。") 
    # 使用 get 方法避免 key error

    return chatbot_answer
    # Gradio ChatInterface 期望 fn 函式回傳 ChatBot 的回覆字串

demo = gr.ChatInterface(fn=chat_interface,
    title="🌐 尼泊爾旅遊規劃夥伴")

# 啟動 Gradio 介面
# share=True 會生成一個公開連結,方便測試
demo.launch(share=True)

流程示意:使用者輸入 → Gradio → FastAPI → 模型回覆

https://ithelp.ithome.com.tw/upload/images/20251012/20178812vcotnn3BG0.png

到這裡,ChatBot 終於能透過可視化的聊天框,與使用者即時對話、真實互動。

Colab 的限制:無法長期上線

Colab 是完美的試車場——快速、免費、方便連雲端。

但它有個天生缺陷:
一旦 Colab 斷線,虛擬機就被釋放 → ngrok 斷線 → Gradio 消失。

換句話說,我們的 ChatBot 雖能跑,但還不穩定、不能長期運作。

部署策略釐清:從試車場到展示場

接下來的任務,是讓 ChatBot 能「隨時被打開、隨時可體驗」。
要達成這件事,我們得處理關鍵環節:

  • 部署:把 ChatBot 放上雲端伺服器,不再依賴 Colab。
  • 介面:決定前端互動的聊天介面

一旦搞定,就能幫 ChatBot 裝上翅膀、建立跑道、調校導航系統。

Streamlit:讓作品真正「常駐上線」

在這階段,我們選擇了熟悉的 Streamlit 作為展示平台,結合它前端互動介面以及自建伺服器的優點,我們將 Colab 筆記本中的核心程式碼,打包成單一 app.py 檔案,並使用 Streamlit 元件建立互動式聊天室介面。

相關操作可以參考 Day 18:Mario Dashboard —— 用 Streamlit 玩轉互動魔法鏡 ;不同的是,我們這次是在 Colab 試車場試跑。

小技巧:在streamlit部署時,記得點進「Advanced Setting」,將授權憑證獨立的保存在「Secrets」。例如:GEMINI_API_KEY = " 認證金鑰 "

成果呈現

ChatBot 成品出來的那刻,真的是滿滿的成就感!

https://ithelp.ithome.com.tw/upload/images/20251012/20178812qaQCoMhWO5.png

隨著 ChatBot 移到 Streamlit 展示場,訪客可以隨時試駕。

📓 小結:

今天的挑戰,標誌著我們從「開發測試」邁向「實際上線」的重要轉折。
ChatBot 不再只是藏在 Colab 裡的原型,而是能被世界看見的服務雛形。

這是他的第一次正式亮相,達成一個小小的里程碑。


上一篇
Day 27:挑戰日誌 —— ChatBot的啟航之鑰
下一篇
Day 29:挑戰日誌 —— ChatBot的未來藍圖
系列文
AI-ction!我的超級瑪莉歐闖關歷險記:用自動化破關,收集時間金幣30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言